package Exceptions;

/**
 * @author : niu niu
 * @version : 1.0.0
 * @date : 2022/10/19 19:21
 *  异常的处理流程：
 *      1.本方法内部产生，当前方法就处理
 *      2.本方法内部产生异常，自己不处理，将异常对象沿着方法的调用链向上传递
 *  有两组关键字和异常抛出有关
 *      throws 用在方法声明上，明确表示当前方法可能产生的异常，但是当前方法不处理，
 *              若异常产生，将一场抛出给调用者
 *              可以产生多个异常  如果抛出多个异常，若抛出的异常有父子关系，只需要抛出父类异常即可
 *              异常由JVM产生，传递给产生异常的方法，若方法内部不处理，交给main，不处理，交给JVM
 *      throw 用在方法内部，表示人为进行异常对象的产生，一般自定义异常搭配使用
 *              程序自己产生异常对象（不是JVM）自己构造
 *
 *   自定义异常类：
 *      JDK内置很多异常类，但是当JDK无，就需要自定义
 *        1.只需要继承Exception（受查） 或者 RuntimeException（非受查）
 *           必须显示处理---Exception   可以不显示处理 ----- RuntimeException
 *        2.实现一个带String 的有参构造，参数就是异常的原因
 *
 */
public class ThrowDemo {
    public static void main(String[] args) {
        try{
            fun();
        }catch (ArithmeticException e){
            System.out.println("main 方法捕获算数异常");
        }
        System.out.println("程序正常推出");
    }
    public static void fun() throws ArithmeticException{
        //当异常产生，方法直接结束调用，将异常抛回给调用者
        System.out.println(10/0);
        System.out.println("方法结束");
    }
}
